package com.nowcoder.community.dao;

import com.nowcoder.community.entity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author AnYang
 * @Description
 * @Version 1.0.0
 * @Date 2024/1/21
 */

@Mapper
public interface MessageMapper {

    // 查询当前用户的会话列表，针对每个会话只返回一条最新的私信
    List<Message> selectConversation(@Param("userId") int userId, @Param("offset") int offset, @Param("limit") int limit);

    // 查询当前和用户的会话数量
    int selectConversationCount(int userId);

    // 查询某个会话所包含的私信列表，详情页面
    List<Message> selectLetters(@Param("conversationId") String conversationId, @Param("offset") int offset, @Param("limit") int limit);

    // 查询某个会话所包含的私信数量
    int selectLetterCount(String conversationId);

    // 查询未读消息数量，一个是查询所有的未读；一个是查询某一个会话的未读数量
    int selectLetterUnreadCount(@Param("userId") int userId, @Param("conversationId") String conversationId);

    // 增加私信
    int insertMessage(Message message);

    // 修改状态，不只有一条私信
    int updateStatus(@Param("ids") List<Integer> ids, @Param("status") int status);

    // 显示各种类型最新消息
    // 查询某个主题下最新通知
    Message selectLatestNotice(int userId, String topic);

    // 查询某个主题所包含的通知数量
    int selectNoticeCount(int userId, String topic);

    // 查询未读通知数量
    int selectNoticeUnreadCount(int userId, String topic);

    // 查询某个主题所包含的通知列表
    List<Message> selectNotices(int userId, String topic, int offset, int limit);
}
